home *** CD-ROM | disk | FTP | other *** search
/ Celestin Apprentice 4 / Apprentice-Release4.iso / Languages / MPW Oberon 2.1168 / OInterfaces / Menus.mod < prev    next >
Encoding:
Text File  |  1995-08-10  |  12.2 KB  |  404 lines  |  [TEXT/MPS ]

  1. (*
  2.      File:        Menus.mod
  3.  
  4.      Contains:    Menu Manager Interfaces.
  5.  
  6.      Version:    Technology:    System 7.5
  7.                  Package:    Universal Interfaces 2.0 in “MPW Latest” on ETO #17
  8.  
  9.      Copyright:    © 1984-1995 by Apple Computer, Inc.
  10.                  All rights reserved.
  11.  
  12.      Bugs?:        If you find a problem with this file, use the Apple Bug Reporter
  13.                  stack.  Include the file and version information (from above)
  14.                  in the problem description and send to:
  15.                      Internet:    apple.bugs.applelink.apple.com
  16.                      AppleLink:    APPLE.BUGS
  17.  
  18. *)
  19.  
  20. (*$IF UNDEFINED OLDROUTINENAMES*)
  21. (*$SET OLDROUTINENAMES FALSE*)
  22. (*$END*)
  23. (*$TAGS-*)
  24. (*$CALLING PASCAL*)
  25. MODULE Menus;
  26.  
  27. IMPORT SYSTEM, Types, Quickdraw;
  28.  
  29. (* $PUSH*)
  30. (* $ALIGN MAC68K*)
  31. (* $LibExport+*)
  32.  
  33. CONST
  34.     noMark*                        = 0;                            (*mark symbol for MarkItem*)
  35. (* menu defProc messages *)
  36.     mDrawMsg*                    = 0;
  37.     mChooseMsg*                    = 1;
  38.     mSizeMsg*                    = 2;
  39.     mDrawItemMsg*                = 4;
  40.     mCalcItemMsg*                = 5;
  41.     textMenuProc*                = 0;
  42.     hMenuCmd*                    = 27;                            (*itemCmd == 0x001B ==> hierarchical menu*)
  43.     hierMenu*                    = -1;                            (*a hierarchical menu - for InsertMenu call*)
  44.     mPopUpMsg*                    = 3;                            (*menu defProc messages - place yourself*)
  45.     mctAllItems*                    = -98;                            (*search for all Items for the given AIFF.ID*)
  46.     mctLastIDIndic*                = -99;                            (*last color table entry has this in AIFF.ID field*)
  47.  
  48. (*$IF UNDEFINED STRICT_MENUS *)
  49. (*$SET STRICT_MENUS FALSE*)
  50. (*$END*)
  51. (*$IF STRICT_MENUS *)
  52.     
  53. TYPE
  54.     MenuRef* = Types.Ptr;
  55.  
  56.     MenuHandle* = MenuRef;
  57.  
  58. (*$ELSE*)
  59.  
  60. TYPE
  61.     MenuInfo* = RECORD
  62.         menuID*:                    INTEGER;
  63.         menuWidth*:                INTEGER;
  64.         menuHeight*:                INTEGER;
  65.         menuProc*:                Types.Handle;
  66.         enableFlags*:            LONGINT;
  67.         menuData*:                Types.Str255;
  68.     END;
  69.  
  70.     MenuPtr* = POINTER TO MenuInfo;
  71.     MenuHandle* = HANDLE TO MenuInfo (*ΔΔ POINTER TO MenuPtr*);
  72.  
  73.     MenuRef* = MenuHandle;
  74.  
  75. (*$END*)
  76.     MenuDefProcPtr* = (*ΔΔ Types.ProcPtr;*) PROCEDURE (message: INTEGER; theMenu: MenuRef; VAR menuRect: Types.Rect; hitPt: Types.Point; VAR whichItem: INTEGER);
  77.     MenuBarDefProcPtr* = (*ΔΔ Types.ProcPtr;*) PROCEDURE (selector: INTEGER; message: INTEGER; parameter1: INTEGER; parameter2: LONGINT): LONGINT;
  78.     MenuHookProcPtr* = (*ΔΔ Types.ProcPtr;*) PROCEDURE ;
  79.     MBarHookProcPtr* = (*ΔΔ Types.ProcPtr;*) PROCEDURE (VAR menuRect: Types.Rect): INTEGER;
  80.     MenuDefUPP* = Types.UniversalProcPtr;
  81.     MenuBarDefUPP* = Types.UniversalProcPtr;
  82.     MenuHookUPP* = Types.UniversalProcPtr;
  83.     MBarHookUPP* = Types.UniversalProcPtr;
  84.  
  85. CONST
  86.     uppMenuDefProcInfo* = $0000FF80; (* PROCEDURE (2 byte param, 4 byte param, 4 byte param, 4 byte param, 4 byte param); *)
  87.     uppMenuBarDefProcInfo* = $00003AB0; (* PROCEDURE (2 byte param, 2 byte param, 2 byte param, 4 byte param): 4 byte result; *)
  88.     uppMenuHookProcInfo* = $00000000; (* PROCEDURE ; *)
  89.     uppMBarHookProcInfo* = $000000CF; (* SPECIAL_CASE_PROCINFO( kSpecialCaseMBarHook ) *)
  90.  
  91. PROCEDURE NewMenuDefProc*(userRoutine: MenuDefProcPtr): MenuDefUPP;
  92.     (*$IF NOT GENERATINGCFM *)
  93.     INLINE PASCAL $2E9F;
  94.     (*$END*)
  95.  
  96. PROCEDURE NewMenuBarDefProc*(userRoutine: MenuBarDefProcPtr): MenuBarDefUPP;
  97.     (*$IF NOT GENERATINGCFM *)
  98.     INLINE PASCAL $2E9F;
  99.     (*$END*)
  100.  
  101. PROCEDURE NewMenuHookProc*(userRoutine: MenuHookProcPtr): MenuHookUPP;
  102.     (*$IF NOT GENERATINGCFM *)
  103.     INLINE PASCAL $2E9F;
  104.     (*$END*)
  105.  
  106. PROCEDURE NewMBarHookProc*(userRoutine: MBarHookProcPtr): MBarHookUPP;
  107.     (*$IF NOT GENERATINGCFM *)
  108.     INLINE PASCAL $2E9F;
  109.     (*$END*)
  110.  
  111. PROCEDURE CallMenuDefProc*(message: INTEGER; theMenu: MenuRef; VAR menuRect: Types.Rect; hitPt: Types.Point; VAR whichItem: INTEGER; userRoutine: MenuDefUPP);
  112.     (*$IF NOT GENERATINGCFM*)
  113.     INLINE PASCAL $205F, $4E90;
  114.     (*$END*)
  115.  
  116. PROCEDURE CallMenuBarDefProc*(selector: INTEGER; message: INTEGER; parameter1: INTEGER; parameter2: LONGINT; userRoutine: MenuBarDefUPP): LONGINT;
  117.     (*$IF NOT GENERATINGCFM*)
  118.     INLINE PASCAL $205F, $4E90;
  119.     (*$END*)
  120.  
  121. PROCEDURE CallMenuHookProc*(userRoutine: MenuHookUPP);
  122.     (*$IF NOT GENERATINGCFM*)
  123.     INLINE PASCAL $205F, $4E90;
  124.     (*$END*)
  125.  
  126. PROCEDURE CallMBarHookProc*(VAR menuRect: Types.Rect; userRoutine: MBarHookUPP): INTEGER;
  127.     (*$IF NOT GENERATINGCFM*)
  128.     INLINE PASCAL ; (*••*)
  129.     (*To be implemented*:  Glue to move parameters according to special case conventions.*)
  130.     (*$END*)
  131.  
  132. TYPE
  133.     MCEntry* = RECORD
  134.         mctID*:                    INTEGER;                                (*menu AIFF.ID.  AIFF.ID* = 0 is the menu bar*)
  135.         mctItem*:                INTEGER;                                (*menu Item. Item* = 0 is a title*)
  136.         mctRGB1*:                Quickdraw.RGBColor;                                (*usage depends on AIFF.ID and Item*)
  137.         mctRGB2*:                Quickdraw.RGBColor;                                (*usage depends on AIFF.ID and Item*)
  138.         mctRGB3*:                Quickdraw.RGBColor;                                (*usage depends on AIFF.ID and Item*)
  139.         mctRGB4*:                Quickdraw.RGBColor;                                (*usage depends on AIFF.ID and Item*)
  140.         mctReserved*:            INTEGER;                                (*reserved for internal use*)
  141.     END;
  142.  
  143.     MCEntryPtr* = POINTER TO MCEntry;
  144.  
  145.     MCTable* = ARRAY 1 (*ΔΔ[0..0]ΔΔ*) OF MCEntry;
  146.  
  147.     MCTablePtr* = POINTER TO MCTable;
  148.     MCTableHandle* = HANDLE TO MCTable (*ΔΔ POINTER TO MCTablePtr*);
  149.  
  150.     MenuCRsrc* = RECORD
  151.         numEntries*:                INTEGER;                                (*number of entries*)
  152.         mcEntryRecs*:            MCTable;                                (*ARRAY [1..numEntries] of MCEntry*)
  153.     END;
  154.  
  155.     MenuCRsrcPtr* = POINTER TO MenuCRsrc;
  156.     MenuCRsrcHandle* = HANDLE TO MenuCRsrc (*ΔΔ POINTER TO MenuCRsrcPtr*);
  157.  
  158. PROCEDURE GetMBarHeight*(): INTEGER;
  159.     (*$IF NOT CFMSYSTEMCALLS*)
  160.     INLINE PASCAL $3EB8, $0BAA;            (* MOVE.w $0BAA,(SP) *)
  161.     (*$END*)
  162.  
  163. PROCEDURE InitMenus*;
  164.     (*$IF NOT GENERATINGCFM*)
  165.     INLINE PASCAL $A930;
  166.     (*$END*)
  167. PROCEDURE NewMenu*(menuID: INTEGER; menuTitle: Types.ConstStr255Param): MenuRef;
  168.     (*$IF NOT GENERATINGCFM*)
  169.     INLINE PASCAL $A931;
  170.     (*$END*)
  171. PROCEDURE GetMenu*(resourceID: INTEGER): MenuRef;
  172.     (*$IF NOT GENERATINGCFM*)
  173.     INLINE PASCAL $A9BF;
  174.     (*$END*)
  175. PROCEDURE DisposeMenu*(theMenu: MenuRef);
  176.     (*$IF NOT GENERATINGCFM*)
  177.     INLINE PASCAL $A932;
  178.     (*$END*)
  179. PROCEDURE AppendMenu*(menu: MenuRef; data: Types.ConstStr255Param);
  180.     (*$IF NOT GENERATINGCFM*)
  181.     INLINE PASCAL $A933;
  182.     (*$END*)
  183. PROCEDURE AppendResMenu*(theMenu: MenuRef; theType: Types.ResType);
  184.     (*$IF NOT GENERATINGCFM*)
  185.     INLINE PASCAL $A94D;
  186.     (*$END*)
  187. PROCEDURE InsertResMenu*(theMenu: MenuRef; theType: Types.ResType; afterItem: INTEGER);
  188.     (*$IF NOT GENERATINGCFM*)
  189.     INLINE PASCAL $A951;
  190.     (*$END*)
  191. PROCEDURE InsertMenu*(theMenu: MenuRef; beforeID: INTEGER);
  192.     (*$IF NOT GENERATINGCFM*)
  193.     INLINE PASCAL $A935;
  194.     (*$END*)
  195. PROCEDURE DrawMenuBar*;
  196.     (*$IF NOT GENERATINGCFM*)
  197.     INLINE PASCAL $A937;
  198.     (*$END*)
  199. PROCEDURE InvalMenuBar*;
  200.     (*$IF NOT GENERATINGCFM*)
  201.     INLINE PASCAL $A81D;
  202.     (*$END*)
  203. PROCEDURE DeleteMenu*(menuID: INTEGER);
  204.     (*$IF NOT GENERATINGCFM*)
  205.     INLINE PASCAL $A936;
  206.     (*$END*)
  207. PROCEDURE ClearMenuBar*;
  208.     (*$IF NOT GENERATINGCFM*)
  209.     INLINE PASCAL $A934;
  210.     (*$END*)
  211. PROCEDURE GetNewMBar*(menuBarID: INTEGER): Types.Handle;
  212.     (*$IF NOT GENERATINGCFM*)
  213.     INLINE PASCAL $A9C0;
  214.     (*$END*)
  215. PROCEDURE GetMenuBar*(): Types.Handle;
  216.     (*$IF NOT GENERATINGCFM*)
  217.     INLINE PASCAL $A93B;
  218.     (*$END*)
  219. PROCEDURE SetMenuBar*(menuList: Types.Handle);
  220.     (*$IF NOT GENERATINGCFM*)
  221.     INLINE PASCAL $A93C;
  222.     (*$END*)
  223. PROCEDURE InsertMenuItem*(theMenu: MenuRef; itemString: Types.ConstStr255Param; afterItem: INTEGER);
  224.     (*$IF NOT GENERATINGCFM*)
  225.     INLINE PASCAL $A826;
  226.     (*$END*)
  227. PROCEDURE DeleteMenuItem*(theMenu: MenuRef; item: INTEGER);
  228.     (*$IF NOT GENERATINGCFM*)
  229.     INLINE PASCAL $A952;
  230.     (*$END*)
  231. PROCEDURE MenuKey*(ch: CHAR): LONGINT;
  232.     (*$IF NOT GENERATINGCFM*)
  233.     INLINE PASCAL $A93E;
  234.     (*$END*)
  235. PROCEDURE HiliteMenu*(menuID: INTEGER);
  236.     (*$IF NOT GENERATINGCFM*)
  237.     INLINE PASCAL $A938;
  238.     (*$END*)
  239. PROCEDURE SetMenuItemText*(theMenu: MenuRef; item: INTEGER; itemString: Types.ConstStr255Param);
  240.     (*$IF NOT GENERATINGCFM*)
  241.     INLINE PASCAL $A947;
  242.     (*$END*)
  243. PROCEDURE GetMenuItemText*(theMenu: MenuRef; item: INTEGER; VAR itemString: Types.Str255);
  244.     (*$IF NOT GENERATINGCFM*)
  245.     INLINE PASCAL $A946;
  246.     (*$END*)
  247. PROCEDURE DisableItem*(theMenu: MenuRef; item: INTEGER);
  248.     (*$IF NOT GENERATINGCFM*)
  249.     INLINE PASCAL $A93A;
  250.     (*$END*)
  251. PROCEDURE EnableItem*(theMenu: MenuRef; item: INTEGER);
  252.     (*$IF NOT GENERATINGCFM*)
  253.     INLINE PASCAL $A939;
  254.     (*$END*)
  255. PROCEDURE CheckItem*(theMenu: MenuRef; item: INTEGER; checked: BOOLEAN);
  256.     (*$IF NOT GENERATINGCFM*)
  257.     INLINE PASCAL $A945;
  258.     (*$END*)
  259. PROCEDURE SetItemMark*(theMenu: MenuRef; item: INTEGER; markChar: CHAR);
  260.     (*$IF NOT GENERATINGCFM*)
  261.     INLINE PASCAL $A944;
  262.     (*$END*)
  263. PROCEDURE GetItemMark*(theMenu: MenuRef; item: INTEGER; VAR markChar: CHAR);
  264.     (*$IF NOT GENERATINGCFM*)
  265.     INLINE PASCAL $A943;
  266.     (*$END*)
  267. PROCEDURE SetItemIcon*(theMenu: MenuRef; item: INTEGER; iconIndex: INTEGER);
  268.     (*$IF NOT GENERATINGCFM*)
  269.     INLINE PASCAL $A940;
  270.     (*$END*)
  271. PROCEDURE GetItemIcon*(theMenu: MenuRef; item: INTEGER; VAR iconIndex: Types.Byte);
  272.     (*$IF NOT GENERATINGCFM*)
  273.     INLINE PASCAL $A93F;
  274.     (*$END*)
  275. PROCEDURE SetItemStyle*(theMenu: MenuRef; item: INTEGER; chStyle: Types.Style);
  276.     (*$IF NOT GENERATINGCFM*)
  277.     INLINE PASCAL $A942;
  278.     (*$END*)
  279. PROCEDURE GetItemStyle*(theMenu: MenuRef; item: INTEGER; VAR chStyle: Types.Style);
  280.     EXTERNAL PASCAL;
  281. PROCEDURE CalcMenuSize*(theMenu: MenuRef);
  282.     (*$IF NOT GENERATINGCFM*)
  283.     INLINE PASCAL $A948;
  284.     (*$END*)
  285. PROCEDURE CountMItems*(theMenu: MenuRef): INTEGER;
  286.     (*$IF NOT GENERATINGCFM*)
  287.     INLINE PASCAL $A950;
  288.     (*$END*)
  289. PROCEDURE GetMenuHandle*(menuID: INTEGER): MenuRef;
  290.     (*$IF NOT GENERATINGCFM*)
  291.     INLINE PASCAL $A949;
  292.     (*$END*)
  293. PROCEDURE FlashMenuBar*(menuID: INTEGER);
  294.     (*$IF NOT GENERATINGCFM*)
  295.     INLINE PASCAL $A94C;
  296.     (*$END*)
  297. PROCEDURE SetMenuFlash*(count: INTEGER);
  298.     (*$IF NOT GENERATINGCFM*)
  299.     INLINE PASCAL $A94A;
  300.     (*$END*)
  301. PROCEDURE MenuSelect*(startPt: Types.Point): LONGINT;
  302.     (*$IF NOT GENERATINGCFM*)
  303.     INLINE PASCAL $A93D;
  304.     (*$END*)
  305. PROCEDURE InitProcMenu*(resID: INTEGER);
  306.     (*$IF NOT GENERATINGCFM*)
  307.     INLINE PASCAL $A808;
  308.     (*$END*)
  309. PROCEDURE GetItemCmd*(theMenu: MenuRef; item: INTEGER; VAR cmdChar: CHAR);
  310.     (*$IF NOT GENERATINGCFM*)
  311.     INLINE PASCAL $A84E;
  312.     (*$END*)
  313. PROCEDURE SetItemCmd*(theMenu: MenuRef; item: INTEGER; cmdChar: CHAR);
  314.     (*$IF NOT GENERATINGCFM*)
  315.     INLINE PASCAL $A84F;
  316.     (*$END*)
  317. PROCEDURE PopUpMenuSelect*(menu: MenuRef; top: INTEGER; left: INTEGER; popUpItem: INTEGER): LONGINT;
  318.     (*$IF NOT GENERATINGCFM*)
  319.     INLINE PASCAL $A80B;
  320.     (*$END*)
  321. PROCEDURE MenuChoice*(): LONGINT;
  322.     (*$IF NOT GENERATINGCFM*)
  323.     INLINE PASCAL $AA66;
  324.     (*$END*)
  325. PROCEDURE DeleteMCEntries*(menuID: INTEGER; menuItem: INTEGER);
  326.     (*$IF NOT GENERATINGCFM*)
  327.     INLINE PASCAL $AA60;
  328.     (*$END*)
  329. PROCEDURE GetMCInfo*(): MCTableHandle;
  330.     (*$IF NOT GENERATINGCFM*)
  331.     INLINE PASCAL $AA61;
  332.     (*$END*)
  333. PROCEDURE SetMCInfo*(menuCTbl: MCTableHandle);
  334.     (*$IF NOT GENERATINGCFM*)
  335.     INLINE PASCAL $AA62;
  336.     (*$END*)
  337. PROCEDURE DisposeMCInfo*(menuCTbl: MCTableHandle);
  338.     (*$IF NOT GENERATINGCFM*)
  339.     INLINE PASCAL $AA63;
  340.     (*$END*)
  341. PROCEDURE GetMCEntry*(menuID: INTEGER; menuItem: INTEGER): MCEntryPtr;
  342.     (*$IF NOT GENERATINGCFM*)
  343.     INLINE PASCAL $AA64;
  344.     (*$END*)
  345. PROCEDURE SetMCEntries*(numEntries: INTEGER; menuCEntries: MCTablePtr);
  346.     (*$IF NOT GENERATINGCFM*)
  347.     INLINE PASCAL $AA65;
  348.     (*$END*)
  349. PROCEDURE InsertFontResMenu*(theMenu: MenuRef; afterItem: INTEGER; scriptFilter: INTEGER);
  350.     (*$IF NOT GENERATINGCFM*)
  351.     INLINE PASCAL $303C, $0400, $A825;
  352.     (*$END*)
  353. PROCEDURE InsertIntlResMenu*(theMenu: MenuRef; theType: Types.ResType; afterItem: INTEGER; scriptFilter: INTEGER);
  354.     (*$IF NOT GENERATINGCFM*)
  355.     INLINE PASCAL $303C, $0601, $A825;
  356.     (*$END*)
  357. PROCEDURE SystemEdit*(editCmd: INTEGER): BOOLEAN;
  358.     (*$IF NOT GENERATINGCFM*)
  359.     INLINE PASCAL $A9C2;
  360.     (*$END*)
  361. PROCEDURE SystemMenu*(menuResult: LONGINT);
  362.     (*$IF NOT GENERATINGCFM*)
  363.     INLINE PASCAL $A9B5;
  364.     (*$END*)
  365. (*$IF OLDROUTINENAMES *)
  366. PROCEDURE AddResMenu*(theMenu: MenuRef; theType: Types.ResType);
  367.     (*$IF NOT GENERATINGCFM*)
  368.     INLINE PASCAL $A94D;
  369.     (*$END*)
  370. PROCEDURE InsMenuItem*(theMenu: MenuRef; itemString: Types.ConstStr255Param; afterItem: INTEGER);
  371.     (*$IF NOT GENERATINGCFM*)
  372.     INLINE PASCAL $A826;
  373.     (*$END*)
  374. PROCEDURE DelMenuItem*(theMenu: MenuRef; item: INTEGER);
  375.     (*$IF NOT GENERATINGCFM*)
  376.     INLINE PASCAL $A952;
  377.     (*$END*)
  378. PROCEDURE SetItem*(theMenu: MenuRef; item: INTEGER; itemString: Types.ConstStr255Param);
  379.     (*$IF NOT GENERATINGCFM*)
  380.     INLINE PASCAL $A947;
  381.     (*$END*)
  382. PROCEDURE GetItem*(theMenu: MenuRef; item: INTEGER; VAR itemString: Types.Str255);
  383.     (*$IF NOT GENERATINGCFM*)
  384.     INLINE PASCAL $A946;
  385.     (*$END*)
  386. PROCEDURE GetMHandle*(menuID: INTEGER): MenuRef;
  387.     (*$IF NOT GENERATINGCFM*)
  388.     INLINE PASCAL $A949;
  389.     (*$END*)
  390. PROCEDURE DelMCEntries*(menuID: INTEGER; menuItem: INTEGER);
  391.     (*$IF NOT GENERATINGCFM*)
  392.     INLINE PASCAL $AA60;
  393.     (*$END*)
  394. PROCEDURE DispMCInfo*(menuCTbl: MCTableHandle);
  395.     (*$IF NOT GENERATINGCFM*)
  396.     INLINE PASCAL $AA63;
  397.     (*$END*)
  398. (*$END*)
  399.  
  400. (* $ALIGN RESET*)
  401. (* $POP*)
  402.  
  403.  END Menus.
  404.